package org.example.ims.Service.Base;

import org.example.ims.Entity.Base.Warehouse;
import org.springframework.data.domain.Page;
import java.util.Optional;

public interface WarehouseService {

    /**
     * 安全插入：检查ID是否存在
     *
     * @param warehouse 包含类别信息的对象
     * @return 已保存的类别对象
     */
    Warehouse addWarehouse(Warehouse warehouse);

    /**
     * 保存一个新的仓库
     *
     * @param warehouse 包含仓库信息的对象，且手动设置ID
     * @return 已保存的类别对象
     */
    Warehouse addWarehouse2(Warehouse warehouse);

    /**
     * 根据仓库ID查找仓库信息
     *
     * @param warehouseId 仓库ID
     * @return 如果存在则返回对应的Optional<Warehouse>，否则为空
     */
    Optional<Warehouse> findWarehouseById(Integer warehouseId);

    /**
     * 获取所有仓库列表
     *
     * @return 所有仓库的列表
     */
    Page<Warehouse> findAllWarehouses(Integer page, Integer size);

    /* 自定义查询 */
    Page<Warehouse> searchWarehouses(String name, String status, Integer page, Integer size);

    /**
     * 更新指定ID的仓库信息
     *
     * @param warehouseId 要更新的仓库ID
     * @param warehouseDetails 新的仓库信息
     * @return 更新后的类别对象，如果原仓库不存在则返回null
     */
    Warehouse updateWarehouse(Integer warehouseId, Warehouse warehouseDetails);

    /**
     * 根据ID删除指定的仓库
     *
     * @param warehouseId 类别ID
     */
    void deleteWarehouseById(Integer warehouseId);
}